// Web平台特定的URL更新实现
import 'package:web/web.dart' as web;
import 'dart:html' as html;

import 'url_updater.dart';

/// 创建URL更新器实例 - Web平台实现
UrlUpdaterBase getUrlUpdater() => WebUrlUpdater();

/// Web平台的URL更新器实现
class WebUrlUpdater implements UrlUpdaterBase {
  // 构造函数中设置popstate事件监听器
  WebUrlUpdater() {
    _setupHistoryEventListener();
  }
  
  /// 设置浏览器历史事件监听器
  void _setupHistoryEventListener() {
    try {
      html.window.onPopState.listen((event) {
        print('捕获到浏览器导航事件: ${html.window.location.pathname}');
        // 注意：这里你可以添加回调，通知应用内路由系统
        // 目前我们仅添加了日志记录
      });
    } catch (e) {
      print('设置历史事件监听器时出错: $e');
    }
  }
  
  @override
  void updateUrl(String url) {
    print('Web平台更新URL: $url'); // 添加调试信息
    try {
      // 使用Web API更新URL，不触发页面刷新
      web.window.history.pushState(null, '', url);
    } catch (e) {
      print('更新URL时出错: $e'); // 添加错误调试信息
      
      // 尝试使用备用方法
      try {
        html.window.history.pushState(null, '', url);
      } catch (e2) {
        print('备用方法也失败: $e2');
      }
    }
  }
} 